/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package atm;

/**
 *
 * @author etenorio
 */
public class Cajero {
  private int id;
  private Operacion operacion;
  private int Opcion;
  ServicioBancario banco;
  float dinero = 100000;

  public Cajero(int id) {
    this.id=id;
    try{
        banco = new ServicioBancario();
    }catch(Exception e){
        
    }
    
  }
  public void setOperacion(int opcion){
    this.Opcion = opcion;
     switch(Opcion){
      case 1:
        operacion = new Consulta();
        break;
      case 2:
        operacion = new Retiro();
        break;
      case 3:
        operacion = new Retiro();
        break;
      case 4:
        operacion = new CambioClave();
        break;      
      default:
        operacion = new Operacion();
        break;
    }
  }
  public Respuesta realizarOperacion(){
    Respuesta respuesta = new Respuesta();
    switch(Opcion){
      case 1:
        respuesta = banco.consultar((Consulta)operacion);
        break;
      case 2:
        if (this.dinero>((Retiro)operacion).getMonto()){
          respuesta = banco.retirar((Retiro)operacion);
          if (respuesta.isAceptada()){
            this.dinero-=((Retiro)operacion).getMonto();
          }
        }
        else{
          respuesta.setMensaje("Este cajero no puede dispensar efectivo por los momentos");
        }
        break;
      case 3:
          respuesta = banco.depositar((Retiro)operacion);
          this.dinero+=((Retiro)operacion).getMonto();
          break;
      case 4:
          respuesta = banco.cambioClave((CambioClave)operacion);
          break;
      default:
        respuesta.setMensaje("Operacion desconocida");
        break;
    }
    return respuesta;
  }

  public int getId() {
    return id;
  }

  public void setId(int id) {
    this.id = id;
  }

  public int getOpcion() {
    return Opcion;
  }

  public void setOpcion(int Opcion) {
    this.Opcion = Opcion;
  }

  public void setBanco(ServicioBancario banco) {
    this.banco = banco;
  }

  public float getDinero() {
    return dinero;
  }

  public void setDinero(float dinero) {
    this.dinero = dinero;
  }

  public Operacion getOperacion() {
    return operacion;
  }

  public void setOperacion(Operacion operacion) {
    this.operacion = operacion;
  }


}
